package com.situ.day6;

import org.junit.Test;

import java.lang.String;

public class StaticDemo {
    // 实例属性(实例变量)，使用："对象.属性"的方式调用，必须先new出对象才能调用
    public int num1 = 3;
    // 静态属性
    public static int num2 = 4;

    // 实例方法
    public void show() {
        System.out.println("StaticDemo.show");
        num1 = 23;
        num2 = 45;
    }

    // 静态方法
    public static void print() {
        System.out.println("StaticDemo.print");
        num2 = 55;
        // num1 = 4;
    }

}

class Demo1{
    int num = 4;
    static int num1 = 14;

    @Test
    public void test1() {
        StaticDemo staticDemo = new StaticDemo();
        System.out.println(staticDemo.num1);
        staticDemo.num1 = 4;

        // 静态属性调用有两种方式：1、对象.属性
        staticDemo.num2 = 5;
        // 2、对于静态属性还可以使用：类名.属性 的方式
        StaticDemo.num2 = 6;

        staticDemo.show();

        staticDemo.print();
        StaticDemo.print();
    }

    public static void main(String[] args) {
        // reference: 参考、引用
        // Non-static field 'num' cannot be referenced from a static context
        // 静态方法、静态属性是属于这个类，当类加载到内存之后，
        // 就可以访问这些静态方法、静态属性，不需要new任何对象
        // num = 23;

        num1 = 45;

        Demo1 demo1 = new Demo1();
        demo1.num = 34;
    }
}
